package kotlinquanweizhinan.chapt09.apply

import java.io.File

class test {
}

fun main() {
    //配置一个File实例
    val menuFile = File("menu-file.txt")
    menuFile.setReadable(true)
    menuFile.setWritable(true)
    menuFile.setExecutable(false)

    /*
    * 在配置某个对象时，可以使用apply函数以减少冗余代码。
    * 使用apply函数，实现同样的配置时，代码简洁多了
    * 可以看到，调用一个个函数来配置接收者时，变量名就省掉了。这是因为，在lambda
    * 表达式里，apply能让每个配置函数都作用于接收者。
    * 这种行为有时又叫做相关作用域(relative scoping),因为lambda表达式里的所有
    * 函数调用都是针对接收者。或者说，它们是针对接收者的隐式调用。
    * */
    val menuFile1 = File("menu-file1.txt").apply{
        setReadable(true)
        setWritable(true)
        setExecutable(false)
    }
}